import type { PageResult } from './permission';

import { requestClient } from '#/api/request';

/**
 * 部门数据结构
 */
export interface Dept {
  id?: number;
  parentId?: number;
  deptName?: string;
  deptCode?: string;
  leader?: number; // 部门领导人ID（用户表ID）
  leaderName?: string; // 部门领导人姓名（用于显示）
  phone?: string;
  email?: string;
  sort?: number;
  status?: number;
  createBy?: string;
  updateBy?: string;
  createTime?: string;
  updateTime?: string;
  createName?: string;
  updateName?: string;
  children?: Dept[];
  pageNum?: number;
  pageSize?: number;
}

/**
 * 部门查询参数
 */
export interface DeptQueryParams {
  deptName?: string;
  status?: number;
  pageNum?: number;
  pageSize?: number;
}

/**
 * 获取部门分页列表
 */
export async function getDeptPageApi(params: DeptQueryParams) {
  return requestClient.post<PageResult<Dept>>('/system/api/dept/page', params);
}

/**
 * 获取部门树形结构
 */
export async function getDeptTreeApi(params?: DeptQueryParams) {
  return requestClient.post<Dept[]>('/system/api/dept/tree', params || {});
}

/**
 * 获取父部门选项（用于下拉选择）
 */
export async function getParentDeptOptionsApi() {
  return requestClient.get<Dept[]>('/system/api/dept/parentOptions');
}

/**
 * 根据ID查询部门详情
 */
export async function getDeptDetailApi(id: number) {
  return requestClient.get<Dept>(`/system/api/dept/${id}`);
}

/**
 * 新增部门
 */
export async function addDeptApi(data: Dept) {
  return requestClient.post('/system/api/dept/add', data);
}

/**
 * 更新部门
 */
export async function updateDeptApi(data: Dept) {
  return requestClient.put('/system/api/dept/edit', data);
}

/**
 * 删除部门
 */
export async function deleteDeptApi(id: number) {
  return requestClient.delete(`/system/api/dept/delete/${id}`);
}

